package Negocio;

import Ordenamiento.MantenimientoComparator;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Set;

/**
 * @author Diego
 * @version 1.0
 * @created 28-sep-2013 21:38:47 p.m.
 */
public class Vehiculo {

	private Integer idVehiculo;
        private String matricula;
	private Integer modelo;
	private Integer nro;        
        private List<Mantenimiento> mantenimientos;
        private String estado;
        private boolean activo;
        
                
	//Constructores
        public Vehiculo(){

    }

    public Vehiculo(String matricula, int modelo, int nro,String estado) {
        this.matricula = matricula;
        this.modelo = modelo;
        this.nro = nro;      
        this.mantenimientos = new LinkedList();
        this.activo = true;
        this.estado = estado;
    }

        //Set & Get
    
    public Integer getIdVehiculo() {
        return idVehiculo;
    }

    public void setIdVehiculo(Integer idVehiculo) {
        this.idVehiculo = idVehiculo;
    }

    public String getMatricula() {
        return matricula;
    }

    public void setMatricula(String matricula) {
        this.matricula = matricula;
    }

    public Integer getModelo() {
        return modelo;
    }

    public void setModelo(int modelo) {
        this.modelo = modelo;
    }

    public Integer getNro() {
        return nro;
    }

    public void setNro(int nro) {
        this.nro = nro;
    }

    public List<Mantenimiento> getMantenimientos() {
        return mantenimientos;
    }

    public void setMantenimientos(List<Mantenimiento> mantenimientos) {
        this.mantenimientos = mantenimientos;
    }

    public String getEstado() {
        return estado;
    }

    public void setEstado(String estado) {
        this.estado = estado;
    }

    public boolean getActivo() {
        return activo;
    }

    public void setActivo(boolean activo) {
        this.activo = activo;
    }
    
    
    
    

    //Metodos
    @Override
    public String toString() {
        return this.getMatricula() + " - " + this.getNro();
    }

        //Agregar Mantenimiento
        public void agregarMantenimiento(Mantenimiento unMantenimiento){
            this.mantenimientos.add(unMantenimiento);
            Empresa.persistencia.update(this);
        }
        
        public Mantenimiento ultimoMantenimiento(){
            Mantenimiento unMantenimiento = null;
            Mantenimiento mt;
            Date fecha = null;            
//            Iterator it = this.mantenimientos.listIterator();
//            while(it.hasNext()){
//                mt = (Mantenimiento) it.next();
//                if(mt.getFecha().compareTo(fecha) < 1){
//                    unMantenimiento = mt;
//                }
//            }
        return unMantenimiento;
    }
        
        public void quitarMantenimiento(Mantenimiento unMantenimiento){
            this.mantenimientos.remove(unMantenimiento);
            Empresa.persistencia.update(this);
        }
        
        public boolean isRodado(){
            return false;
        }
        public boolean isAgricola(){
            return false;
        }
        public void modificar(String matricula,Integer modelo,Integer nro,String estado){
            this.matricula = matricula;
            this.modelo = modelo;
            this.nro = nro;
            this.estado = estado;
        }
        public void deshabilitar(){
            this.activo = false;
            this.estado="Baja";
            Empresa.persistencia.update(this);
        }
        public List<Mantenimiento> ordenarMantenimientos(List<Mantenimiento> lista,int criterio){
        List<Mantenimiento> aux = new LinkedList();
               switch(criterio){
                case 1: 
                    Collections.sort(lista, new MantenimientoComparator());
                    break;                
               }
             return aux;
        
    }

}
